package com.practice.aeString005;

public class Str {
    public static void main(String[] args) {
        // 字符串初始化后不可变性。
        // private final char value[]; 存储字符串，所以字符串不可变。
        // 初始化时也会生成一个 hashCode 用于标识字符串
        String immutable2 = new String("Hello World");
        String immutable3 = new String("Hello World");
        String immutable4 = new String("Hello World ~~~");
        System.out.println(immutable2.hashCode());
        System.out.println(immutable3.hashCode());
        System.out.println(immutable4.hashCode());

        // 字符串长度
        System.out.println(immutable2.length());
        // 通过判断字符串的长度是否为 0 来判断字符串是否为空，空返回 true，非空返回 false，当字符串为 null 时，会报 npe 异常
        System.out.println(immutable2.isEmpty());

        // 返回指定下表索引的字符，下表从 0 开始，value.length() - 1
        System.out.println(immutable2.charAt(0));
        // 返回指定下表索引的字符的 Unicode 码，下表从 0 开始，value.length() - 1
        System.out.println(immutable2.codePointAt(0));
        // 返回指定下表索引 - 1 的字符的 Unicode 码，下表从 1 开始，value.length() - 1
        System.out.println(immutable2.codePointBefore(1));
        System.out.println(immutable2.equals(immutable3));
        System.out.println(immutable2.equals(immutable4));
        System.out.println(immutable2.contentEquals(immutable3));
        System.out.println(immutable2.contentEquals(immutable4));
        System.out.println(immutable2.equalsIgnoreCase(immutable3));
        System.out.println(immutable2.compareTo(immutable3));//一次比较每个字符串的 Unicode 码
        System.out.println(immutable2.compareTo(immutable3));//一次比较每个字符串的 Unicode 码，忽略大小写
        System.out.println(immutable2.startsWith("He", 0));
        System.out.println(immutable2.endsWith("World"));
        System.out.println(immutable2.indexOf(" "));
        System.out.println(immutable2.substring(0, 5));
        System.out.println(immutable2.concat("~~~"));
        System.out.println(immutable2.replace("Hello", "Ha"));
        System.out.println(immutable2.matches("Hello"));//通配符匹配
        System.out.println(immutable2.contains("Hello"));
        System.out.println(immutable2.toLowerCase());
        System.out.println(immutable2.toUpperCase());
        System.out.println(immutable2.trim());
    }
}
